perm filename MARCH7[1,ALS] blob
sn#090757 filedate 1974-03-08 generic text, type T, neo UTF8
00010 INTEGER PROCEDURE ZERO(INTEGER LOW,HIGH);
00020 BEGIN
00030 INTEGER I,J; REAL MIN;
00040
00050 MIN←10000;
00060 FOR I←LOW STEP 1 UNTIL HIGH DO
00070 IF C[I]<MIN THEN BEGIN MIN←C[I]; J←I; END;
00080 IF (J=LOW)∨(J=HIGH THEN NZA←NZ←J←0 ELSE BEGIN
00090 NZ←J; NZA←C[J]; END;
00100 RETURN(J);
00110 END;
00120
00130
00140 INTEGER PROCEDURE INTERP(INTEGER F);
00150 BEGIN
00160 ⊂ Parobolic interpolation to increase precision in locating formants to
00170 approximately 10 hertz for a 256 point FFT with 20000 samples per second;
00180 INTEGER I; REAL X;
00190
00200 X←2*(C[F-1]-C[F+1])/(C[F-1]-2*C[F]+C[F+1]);
00210 ⊂ Four times the displacement of center of the formant from F;
00220 I←F*4-X; IF I>511 THEN I←511; ⊂ To store in 9 bits;
00230 RETURN(I);
00240 END;
00250
00260 REAL PROCEDURE PASS(INTEGER FA,FB);
00270 BEGIN
00280 INTEGER I; REAL X;
00290 X←0;
00300 FOR I←FA STEP 1 UNTIL FB DO X←X+C[I];
00310 IF (I←FB-FA+1)≤0 THEN X←0 ELSE X←X/I;
00320 RETURN(X);
00330 END;
00340
00350
00360 PROCEDURE NASAL;
00370 BEGIN
00380
00390 IF INFLAG=0 THEN BEGIN
00400 INNAM[P]←CVASP("NP"); P←P+1;
00410 INNAM[P]←CVASP("NZ"); P←P+1;
00420 INNAM[P]←CVASP("NPA"); P←P+1;
00430 INNAM[P]←CVASP("NZA"); P←P+1;
00440
00450 END ELSE BEGIN
00460
00470 IF F1<NP_LOW THEN FA←NP_LOW ELSE FA←F1;
00480 IF F2>NP_HI THEN FB←NP_HI ELSE FB←F2;
00490 NP←PEAK(FA,FB);
00500 NZ←ZERO(FA,FB);
00510
00520
00530 INDATA[P]←NP; P←P+1;
00540 INDATA[P]←NZ; P←P+1;
00550 INDATA[P]←C[NP]; P←P+1;
00560 INDATA[P]←C[NZ]; P←P+1;
00570
00580 END;
00590
00600